package mysql8学习.高级.第14章_MySQL事务日志;

/**
 * 对于InnoDB引擎来说，每个行记录除了记录本身的数据之外，
 * 还有几个隐藏的列:
 * ● DB_ROW_ID: 如果没有为表显式的定义主键,并且表中也没有定义唯一索引，
 *   那么InnoDB会自动为表添加一个row_id的隐藏列作为主键。
 * ● DB_TRX_ID:每个务都会分配一个务ID,当对某条记录发生变更时，
 *   就会将这个事务的事务ID写入trx_id中。
 * ● DB_ROLL_PTR:回滚指针,本质上就是指向undo log的指针。
 *
 * ●针对于insert undo log
 * 因为insert操作的记录，只对事务本身可见，对其他事务不可见。
 * 故该undo log可以在事务提交后直接删除，不需要进行purge操作。
 * ●针对于update undo log
 * 该undo log可能需要提供MVCC机制，因此不能在事务提交时就进行删除。
 * 提交时放入undo log链表,等待purge线程进行最后的删除。
 *
 * 补充:
 * purge线程两个主要作用是:清理undo贞 和清除page里向带lDelete. Bit标识的数据行。
 * 在InnoDB中， 事务中的Delete操作实际上并不是真正的删除掉数据行，
 * 而是一种Delete Mark操作，在记录上标识Delete_ Bit,而不删除记录。
 * 是一种”假删除",只是做了个标记， 真正的删除工作需要后台purge线程去完成。
 */
public class C5_Undo日志的生命周期 {
}
